/*
 *   Copyright (C) 2010  Jens Kieselbach
 * 
 *   This program is free software: you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation, either version 3 of the License, or
 *   (at your option) any later version.
 * 
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 * 
 *   You may obtain a copy of the License at http://www.gnu.org/licenses/gpl.html
 */

package de.kieselbach.swing.table

import javax.swing.*
import javax.swing.table.*

class TableUtilities {

    static void setOptimalColumnWidths(JTable table) {

        for (def enumeration = table.getColumnModel().getColumns(); enumeration.hasMoreElements();) {
            def tc = enumeration.nextElement()

            def tcr = tc.getHeaderRenderer()
            if (tcr == null) {
                tcr = table.getTableHeader().getDefaultRenderer()
            }
            int hwide = 10
            if (tcr != null) {
                hwide = tcr.getTableCellRendererComponent(table, tc.getHeaderValue(), false, false, 0, 0).getPreferredSize().width + 5
            }

            int c = tc.getModelIndex()
            int cwide = 0

            for (int i = 0; i < table.getRowCount(); ++i) {
                int width = table.getCellRenderer(i, c).getTableCellRendererComponent(table, table.getValueAt(i, c), false, false, i, c).getPreferredSize().width + 5
                cwide = (width > cwide ? width : cwide)
            }

            tc.setPreferredWidth((hwide > cwide ? hwide : cwide))
        }
    }
}

